home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Over 1,000 Windows 95 Programs
/
Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso
/
1262
/
samples
/
invoicef.pr_
/
invoicef.pr
Wrap
Text File
|
1995-03-14
|
9KB
|
256 lines
* Generated by EasyCODE(SPX) V5.1 at 15.03.1995 18:20:53
* with C:\EASY\SAMPLES\SPX-XBS\FOXPRO.CFG
* Invoice
* Main procedure
PROCEDURE Invoice
* Connection to external procedure file
SET PROCEDURE TO Library
* Define working environment
DO Set_env
SET COLOR TO &c_standard.
* Create variables
STORE "" TO cust_nr, comment, note, inv_nr, inv_old
STORE 0 TO amnt_ord, ord_payed, amount, last_amnt, payed, balance_old
STORE { . . } TO inv_date, last_inv
* Variables needed for parameter passing to library
dbf = "INVOICE" && Standard report available
mlist = "NOT AVAILABLE" && Labels not available
cust_rpt = "NOT AVAILABLE" && Customer report not available
STORE "m->inv_nr" TO key, key1
STORE "NONE" TO key2, key3
keyname1 = "Invoice Number:"
STORE "" TO keyname2, keyname3
list_flds = "INV_NR, CUST_NR, INV_DATE, AMOUNT, BALANCE_OLD"
STORE 0 TO balance, age
* Activate database and index files
SELECT 1
USE Invoice ORDER Invoice
USE Customers ORDER Customers IN 2
SET RELATION TO cust_nr INTO Customers
GO TOP
record_num = RECNO()
* Load first record into variables
DO Load_fld
* Display on screen
CLEAR
DO Dstatus
DO Backgrnd
DO Show_data
* Definition of popup menu
DO Bar_def
* Activate main popup menu (acc. to user sel.)
SET COLOR TO &c_popup.
ACTIVATE POPUP main_mnu
DO Sub_ret
RETURN
* Indexer
PROCEDURE Indexer
* Create new index
INDEX ON balance_old TAG Bilanz
INDEX ON cust_nr TAG Kunde
INDEX ON inv_nr TAG Invoice
GO TOP
RETURN
* Init_fld
PROCEDURE Init_fld
* Initialize variables for data input
STORE SPACE(10) TO inv_nr, inv_old
cust_nr = SPACE(6)
STORE 0 TO amnt_ord, amount, last_amnt, payed
STORE SPACE(30) TO comment, note
STORE { . . } TO inv_date, last_inv
RETURN
* Load_fld
PROCEDURE Load_fld
* Load data from database INVOICE into variables
inv_nr = inv_nr
cust_nr = cust_nr
amnt_ord = amnt_ord
ord_payed = ord_payed
inv_date = inv_date
amount = amount
comment = comment
note = note
last_inv = last_inv
last_amnt = last_amnt
payed = payed
balance_old = balance_old
inv_old = inv_old
RETURN
* Repl_fld
PROCEDURE Repl_fld
* Replace contents of fields with actual values of variables
REPLACE inv_nr WITH m->inv_nr, cust_nr WITH m->cust_nr,;
amnt_ord WITH m->amnt_ord, inv_date WITH m->inv_date,;
amount WITH m->amount, comment WITH m->comment
REPLACE note WITH m->note, last_inv WITH m->last_inv,;
last_amnt WITH m->last_amnt, payed WITH m->payed,;
inv_old WITH m->inv_old, balance_old WITH m->balance_old,;
ord_payed WITH m->ord_payed
RETURN
* Backgrnd
PROCEDURE Backgrnd
* Screen for data input and output
* Draw frame
@ 1,18 TO 3,41 DOUBLE COLOR &c_blue.
@ 5, 1 TO 7,56 DOUBLE COLOR &c_red.
@ 2,19 FILL TO 2,40 COLOR &c_red.
@ 6, 2 FILL TO 6,55 COLOR &c_red.
@ 9, 2 FILL TO 20,55 COLOR &c_red.
@ 10, 1 TO 10,56 COLOR &c_red.
@ 18, 1 TO 18,56 COLOR &c_red.
@ 8, 1 TO 21,56 COLOR &c_red.
SET COLOR TO &c_data.
@ 2,20 SAY " ACCOUNTS"
@ 6, 3 SAY "INVOICE NUMBER:"
@ 6,30 SAY "INVOICE DATE:"
@ 9, 3 SAY "CUSTOMER NUMBER:"
@ 11, 3 SAY "- LAST INVOICE -"
@ 12, 3 SAY "NUMBER:"
@ 13, 3 SAY "DATE: "
@ 11,28 SAY "--------- AMOUNTS ----------"
@ 12,28 SAY "LAST INVOICE ($)"
@ 14, 3 SAY "Days over"
@ 13,28 SAY "LAST PAYMENT ($)"
@ 14,28 SAY "OLD BALANCE ($)"
@ 15,28 SAY "ACTUAL ORDER ($)"
@ 17, 3 SAY "PAYED ($)"
@ 17,28 SAY "RECEIVABLES ($)"
@ 19, 3 SAY "COMMENT:"
@ 20, 3 SAY "NOTE: "
SET COLOR TO &c_standard.
RETURN
* Show_data
PROCEDURE Show_data
* Screen for data input and output
* Compute temporary data
* Balance_old = Last_Invoice - Last_Payment
balance_old = m->last_amnt - m->payed
* Amount of this invoice is Old_Balance + New_Invoice_Amount
amount = m->balance_old + m->amnt_ord
* Is there an outstanding invoice
age = IIF(m->balance_old > 0,DATE() - m->last_inv,0)
*
SET COLOR TO &c_data.
@ 6,19 SAY m->inv_nr
@ 6,47 SAY m->inv_date
@ 9,16 SAY m->cust_nr
@ 9,26 SAY Customers->Customer FUNCTION "!" COLOR &c_yelowhit.
@ 12,11 SAY m->inv_old
@ 13,11 SAY m->last_inv
* Display in color if outstanding invoice
IF ISCOLOR()
* Color screen
DO CASE
CASE m->age >= 60
age_color = c_red && Red for danger
CASE (m->age < 60);
.AND. (age >= 45)
age_color = c_yellow && Yellow for attention
CASE m->age < 45
age_color = c_green && Green - OK
ENDCASE
ELSE
* Monochrome screen
age_color = "W"
ENDIF
@ 12,46 SAY m->last_amnt PICTURE "999,999.99"
@ 14,20 SAY m->age PICTURE "999" COLOR &age_color.
@ 13,46 SAY m->payed PICTURE "999,999.99"
IF ISCOLOR()
* Color screen
DO CASE
CASE balance_old >= 1000
bal_color = c_red
CASE (balance_old <= 1000);
.AND. (balance_old >= 100)
bal_color = c_yelowhit
CASE balance_old < 100
bal_color = c_green
ENDCASE
ELSE
* Monochrome screen
bal_color = "W"
ENDIF
@ 14,46 SAY m->balance_old PICTURE "999,999.99" COLOR &bal_color.
@ 15,46 SAY m->amnt_ord PICTURE "999,999.99"
@ 17,16 SAY m->ord_payed PICTURE "999,999.99"
@ 17,46 SAY m->amount PICTURE "999,999.99" COLOR &c_yelowhit.
@ 19,16 SAY m->comment
@ 20,10 SAY m->note
IF ISCOLOR()
@ 22,1 SAY "Parts not yellow are computed" ;
COLOR &c_yelowhit.
ELSE
@ 22,1 SAY "Parts not colored are computed"
ENDIF
SET COLOR TO &c_standard.
RETURN
* Get_data
PROCEDURE Get_data
* Note: RECEIVABLES ($), COMMENT and NOTICE are the onl input fields.
* All other data is updated automatically when printed.
* Compute temporary data
* Balance_old = Last_Invoice - Last_Payment
balance_old = m->last_amnt - m->payed
* Amount of this invoice is Old_Balance + New_Invoice_Amount
amount = m->balance_old + m->amnt_ord
* Are there outstanding invoices
age = IIF(m->balance_old > 0,DATE() - m->last_inv,0)
*
SET COLOR TO &c_data.
@ 6,19 GET m->inv_nr ;
VALID Duplicat(m->inv_nr) ERROR "Invoice number already exists - Re-enter" ;
MESSAGE "Enter valid invoice number (Customer Number + year * month)"
@ 6,47 GET m->inv_date
@ 9,16 GET m->cust_nr PICTURE "!!9999";
VALID Lookupid(m->cust_nr) ERROR "Customer Number already exists - Re-enter"
@ 12,11 GET m->inv_old
@ 13,11 GET m->last_inv FUNCTION "D"
* Color display if there are outstanding invoices
IF ISCOLOR()
DO CASE
CASE m->age >= 60
age_color = c_red && Red for danger
CASE (m->age < 60);
.AND. (age >= 45)
age_color = c_yellow && Gelb for attention
CASE m->age < 45
age_color = c_green && Green - OK
ENDCASE
ELSE
* Monochrome screen
age_color = "W"
ENDIF
@ 12,46 GET m->last_amnt PICTURE "999,999.99"
@ 13,46 GET m->payed PICTURE "999,999.99"
IF ISCOLOR()
DO CASE
CASE balance_old >= 1000
bal_color = c_red
CASE (balance_old <= 1000);
.AND. (balance_old >= 100)
bal_color = c_yelowhit
CASE balance_old < 100
bal_color = c_green
ENDCASE
ELSE
* Monochrome screen
bal_color = "W"
ENDIF
@ 15,46 GET m->amnt_ord PICTURE "999,999.99"
@ 17,16 GET m->ord_payed PICTURE "999,999.99"
@ 19,16 GET m->comment FUNCTION "!"
@ 20,10 GET m->note FUNCTION "!"
IF ISCOLOR()
@ 22,1 SAY "Parts not yellow are computed" ;
COLOR &c_yelowhit.
ELSE
@ 22,1 SAY "Parts not colored are computed"
ENDIF
SET COLOR TO &c_standard.
ON KEY LABEL F9 DO Findcust with m->cust_nr
RETURN